Import data

# Read in bdi data
bdi <- readr::read_rds('./data/bdi.rds') %>%
    arrange(ID) %>%
    mutate(ID = stringr::str_to_lower(ID))

# Read in site and group info
foo <- readr::read_rds('./data/demographics.rds') %>%
    select(ID, Site, Group, Sex) %>%
    rename(ID2 = ID) %>%
    arrange(ID2)

# Join the two datasets 
bdi <- foo %>%
    bind_cols(bdi) %>%
    rowwise() %>%
    mutate(ID_match = ifelse(ID2 == ID,
                             yes = TRUE,
                             no = FALSE))

# Check for mismatches from join
nrow(filter(bdi, ID_match == FALSE))
## [1] 0
# Eliminate extra ID column
bdi <- bdi %>%
    select(-ID,
           -ID_match) %>%
    rename(ID = ID2)

Quick look

glimpse(bdi)
## Observations: 160
## Variables: 130
## $ ID                <chr> "j1", "j10", "j11", "j12", "j17", "j18", "j1...
## $ Site              <chr> "u1", "u1", "u1", "u1", "u1", "u1", "u1", "u...
## $ Group             <chr> "p", "t", "p", "t", "t", "t", "t", "p", "t",...
## $ Sex               <chr> "female", "male", "female", "female", "femal...
## $ Sadness_BL        <int> 1, 1, 3, 0, 3, NA, 0, 2, 0, 1, NA, 3, 3, 3, ...
## $ Sadness_Wk4       <int> NA, 0, 0, NA, NA, NA, 0, NA, 0, 2, NA, NA, N...
## $ Sadness_Wk8       <int> NA, 0, 0, 0, NA, NA, 0, 3, 0, 1, NA, NA, NA,...
## $ Sadness_Wk12      <int> NA, 0, 0, 0, 3, NA, NA, NA, 0, 1, NA, NA, NA...
## $ Sadness_Wk24      <int> NA, 0, NA, 0, NA, NA, NA, 1, 0, 0, NA, NA, N...
## $ Sadness_Wk48      <int> NA, 1, NA, 0, NA, NA, NA, 0, NA, 3, NA, NA, ...
## $ Pessimism_BL      <int> 2, 0, 0, 1, 2, NA, 0, 3, 0, 1, NA, 3, 3, 0, ...
## $ Pessimism_Wk4     <int> NA, 0, 0, NA, NA, NA, 0, NA, 2, 1, NA, NA, N...
## $ Pessimism_Wk8     <int> NA, 0, 0, 0, NA, NA, 0, 1, 0, 1, NA, NA, NA,...
## $ Pessimism_Wk12    <int> NA, 0, 0, 0, 3, NA, NA, NA, 0, 0, NA, NA, NA...
## $ Pessimism_Wk24    <int> NA, 0, NA, 0, NA, NA, NA, 0, 0, 0, NA, NA, N...
## $ Pessimism_Wk48    <int> NA, 0, NA, 0, NA, NA, NA, 0, NA, 1, NA, NA, ...
## $ Past_fail_BL      <int> 2, 0, 2, 0, 0, NA, 2, 3, 0, 0, NA, 3, 3, 0, ...
## $ Past_fail_Wk4     <int> NA, 0, 0, NA, NA, NA, 0, NA, 0, 0, NA, NA, N...
## $ Past_fail_Wk8     <int> NA, 0, 0, 0, NA, NA, 0, 2, 0, 0, NA, NA, NA,...
## $ Past_fail_Wk12    <int> NA, 0, 0, 0, 3, NA, NA, NA, 0, 0, NA, NA, NA...
## $ Past_fail_Wk24    <int> NA, 0, NA, 0, NA, NA, NA, 3, 0, 0, NA, NA, N...
## $ Past_fail_Wk48    <int> NA, 0, NA, 0, NA, NA, NA, 0, NA, 0, NA, NA, ...
## $ Loss_pleas_BL     <int> 2, 1, 2, 1, 0, NA, 3, 1, 1, 0, NA, 2, 3, 2, ...
## $ Loss_pleas_Wk4    <int> NA, 1, 2, NA, NA, NA, 3, NA, 0, 0, NA, NA, N...
## $ Loss_pleas_Wk8    <int> NA, 1, 2, 1, NA, NA, 3, 1, 0, 0, NA, NA, NA,...
## $ Loss_pleas_Wk12   <int> NA, 0, 2, 1, 2, NA, NA, NA, 1, 0, NA, NA, NA...
## $ Loss_pleas_Wk24   <int> NA, 1, NA, 1, NA, NA, NA, 2, 1, 1, NA, NA, N...
## $ Loss_pleas_Wk48   <int> NA, 1, NA, 2, NA, NA, NA, 2, NA, 1, NA, NA, ...
## $ Guilty_BL         <int> 2, 0, 2, 0, 0, NA, 1, 1, 0, 1, NA, 3, 1, 0, ...
## $ Guilty_Wk4        <int> NA, 1, 0, NA, NA, NA, 0, NA, 0, 0, NA, NA, N...
## $ Guilty_Wk8        <int> NA, 0, 0, 0, NA, NA, 0, 1, 0, 0, NA, NA, NA,...
## $ Guilty_Wk12       <int> NA, 0, 0, 0, 2, NA, NA, NA, 0, 0, NA, NA, NA...
## $ Guilty_Wk24       <int> NA, 0, NA, 0, NA, NA, NA, 2, 0, 0, NA, NA, N...
## $ Guilty_Wk48       <int> NA, 0, NA, 0, NA, NA, NA, 0, NA, 0, NA, NA, ...
## $ Punish_BL         <int> 3, 0, 3, 0, 0, NA, 0, 3, 0, 0, NA, 3, 3, 0, ...
## $ Punish_Wk4        <int> NA, 0, 0, NA, NA, NA, 0, NA, 0, 0, NA, NA, N...
## $ Punish_Wk8        <int> NA, 0, 0, 0, NA, NA, 0, 3, 0, 0, NA, NA, NA,...
## $ Punish_Wk12       <int> NA, 0, 0, 0, 3, NA, NA, NA, 0, 0, NA, NA, NA...
## $ Punish_Wk24       <int> NA, 0, NA, 0, NA, NA, NA, 3, 0, 0, NA, NA, N...
## $ Punish_Wk48       <int> NA, 0, NA, 3, NA, NA, NA, 0, NA, 0, NA, NA, ...
## $ Self_dislike_BL   <int> 1, 0, 2, 0, 0, NA, 2, 2, 1, 0, NA, 2, 3, 0, ...
## $ Self_dislike_Wk4  <int> NA, 0, 0, NA, NA, NA, 0, NA, 0, 0, NA, NA, N...
## $ Self_dislike_Wk8  <int> NA, 0, 0, 0, NA, NA, 0, 0, 0, 0, NA, NA, NA,...
## $ Self_dislike_Wk12 <int> NA, 0, 0, 0, 1, NA, NA, NA, 0, 0, NA, NA, NA...
## $ Self_dislike_Wk24 <int> NA, 0, NA, 0, NA, NA, NA, 2, 0, 0, NA, NA, N...
## $ Self_dislike_Wk48 <int> NA, 0, NA, 1, NA, NA, NA, 0, NA, 0, NA, NA, ...
## $ Self_crit_BL      <int> 3, 0, 3, 0, 3, NA, 3, 3, 0, 2, NA, 3, 3, 0, ...
## $ Self_crit_Wk4     <int> NA, 1, 0, NA, NA, NA, 0, NA, 0, 0, NA, NA, N...
## $ Self_crit_Wk8     <int> NA, 0, 0, 0, NA, NA, 0, 3, 0, 0, NA, NA, NA,...
## $ Self_crit_Wk12    <int> NA, 0, 0, 0, 3, NA, NA, NA, 0, 0, NA, NA, NA...
## $ Self_crit_Wk24    <int> NA, 1, NA, 0, NA, NA, NA, 2, 1, 0, NA, NA, N...
## $ Self_crit_Wk48    <int> NA, 0, NA, 1, NA, NA, NA, 0, NA, 0, NA, NA, ...
## $ Suicide_BL        <int> 3, 0, 0, 0, 0, NA, 0, 0, 0, 0, NA, 1, 0, 0, ...
## $ Suicide_Wk4       <int> NA, 0, 0, NA, NA, NA, 0, NA, 0, 0, NA, NA, N...
## $ Suicide_Wk8       <int> NA, 0, 0, 0, NA, NA, 0, 0, 0, 0, NA, NA, NA,...
## $ Suicide_Wk12      <int> NA, 0, 0, 0, 0, NA, NA, NA, 0, 0, NA, NA, NA...
## $ Suicide_Wk24      <int> NA, 0, NA, 0, NA, NA, NA, 0, 0, 0, NA, NA, N...
## $ Suicide_Wk48      <int> NA, 0, NA, 0, NA, NA, NA, 0, NA, 0, NA, NA, ...
## $ Crying_BL         <int> 3, 0, 3, 0, 3, NA, 0, 2, 0, 0, NA, 1, 0, 1, ...
## $ Crying_Wk4        <int> NA, 3, 0, NA, NA, NA, 0, NA, 0, 0, NA, NA, N...
## $ Crying_Wk8        <int> NA, 0, 0, 0, NA, NA, 0, 0, 0, 0, NA, NA, NA,...
## $ Crying_Wk12       <int> NA, 3, 0, 0, 3, NA, NA, NA, 0, 0, NA, NA, NA...
## $ Crying_Wk24       <int> NA, 3, NA, 0, NA, NA, NA, 2, 3, 3, NA, NA, N...
## $ Crying_Wk48       <int> NA, 0, NA, 2, NA, NA, NA, 0, NA, 0, NA, NA, ...
## $ Agitation_BL      <int> 3, 3, 3, 0, 3, NA, 3, 2, 0, 0, NA, 1, 0, 2, ...
## $ Agitation_Wk4     <int> NA, 3, 3, NA, NA, NA, 0, NA, 0, 0, NA, NA, N...
## $ Agitation_Wk8     <int> NA, 3, 0, 0, NA, NA, 0, 3, 3, 0, NA, NA, NA,...
## $ Agitation_Wk12    <int> NA, 3, 2, 3, 1, NA, NA, NA, 0, 0, NA, NA, NA...
## $ Agitation_Wk24    <int> NA, 3, NA, 0, NA, NA, NA, 1, 3, 2, NA, NA, N...
## $ Agitation_Wk48    <int> NA, 3, NA, 2, NA, NA, NA, 2, NA, 1, NA, NA, ...
## $ Loss_int_BL       <int> 3, 0, 0, 0, 0, NA, 0, 1, 0, 0, NA, 1, 0, 0, ...
## $ Loss_int_Wk4      <int> NA, 0, 0, NA, NA, NA, 0, NA, 0, 0, NA, NA, N...
## $ Loss_int_Wk8      <int> NA, 0, 0, 0, NA, NA, 0, 0, 0, 0, NA, NA, NA,...
## $ Loss_int_Wk12     <int> NA, 0, 0, 0, 1, NA, NA, NA, 0, 0, NA, NA, NA...
## $ Loss_int_Wk24     <int> NA, 0, NA, 0, NA, NA, NA, 0, 0, 0, NA, NA, N...
## $ Loss_int_Wk48     <int> NA, 0, NA, 1, NA, NA, NA, 0, NA, 0, NA, NA, ...
## $ Indecis_BL        <int> 2, 0, 0, 0, 0, NA, 0, 3, 0, 1, NA, 2, 3, 1, ...
## $ Indecis_Wk4       <int> NA, 0, 0, NA, NA, NA, 0, NA, 0, 0, NA, NA, N...
## $ Indecis_Wk8       <int> NA, 0, 0, 0, NA, NA, 0, 0, 0, 0, NA, NA, NA,...
## $ Indecis_Wk12      <int> NA, 0, 0, 0, 0, NA, NA, NA, 0, 0, NA, NA, NA...
## $ Indecis_Wk24      <int> NA, 0, NA, 0, NA, NA, NA, 2, 0, 0, NA, NA, N...
## $ Indecis_Wk48      <int> NA, 0, NA, 1, NA, NA, NA, 0, NA, 2, NA, NA, ...
## $ Worthless_BL      <int> 2, 1, 0, 0, 0, NA, 0, 2, 0, 0, NA, 3, 2, 0, ...
## $ Worthless_Wk4     <int> NA, 0, 1, NA, NA, NA, 0, NA, 0, 0, NA, NA, N...
## $ Worthless_Wk8     <int> NA, 0, 0, 0, NA, NA, 0, 0, 0, 0, NA, NA, NA,...
## $ Worthless_Wk12    <int> NA, 0, 0, 0, 0, NA, NA, NA, 0, 0, NA, NA, NA...
## $ Worthless_Wk24    <int> NA, 0, NA, 0, NA, NA, NA, 1, 0, 0, NA, NA, N...
## $ Worthless_Wk48    <int> NA, 0, NA, 2, NA, NA, NA, 0, NA, 0, NA, NA, ...
## $ Loss_energy_BL    <int> 1, 1, 2, 0, 2, NA, 0, 2, 2, 1, NA, 1, 2, 0, ...
## $ Loss_energy_Wk4   <int> NA, 1, 2, NA, NA, NA, 0, NA, 1, 0, NA, NA, N...
## $ Loss_energy_Wk8   <int> NA, 1, 2, 0, NA, NA, 0, 0, 1, 0, NA, NA, NA,...
## $ Loss_energy_Wk12  <int> NA, 1, 3, 1, 3, NA, NA, NA, 1, 1, NA, NA, NA...
## $ Loss_energy_Wk24  <int> NA, 0, NA, 1, NA, NA, NA, 1, 1, 3, NA, NA, N...
## $ Loss_energy_Wk48  <int> NA, 0, NA, 1, NA, NA, NA, 0, NA, 1, NA, NA, ...
## $ Sleep_BL          <int> 3, 2, 3, 2, 2, NA, 0, 3, 3, 2, NA, 0, 2, 2, ...
## $ Sleep_Wk4         <int> NA, 3, 2, NA, NA, NA, 3, NA, 3, 2, NA, NA, N...
## $ Sleep_Wk8         <int> NA, 3, 2, 2, NA, NA, 2, 2, 2, 2, NA, NA, NA,...
## $ Sleep_Wk12        <int> NA, 3, 3, 2, 2, NA, NA, NA, 3, 3, NA, NA, NA...
## $ Sleep_Wk24        <int> NA, 2, NA, 2, NA, NA, NA, 2, 3, 2, NA, NA, N...
## $ Sleep_Wk48        <int> NA, 2, NA, 3, NA, NA, NA, 0, NA, 0, NA, NA, ...
## $ Irrit_BL          <int> 2, 0, 1, 0, 2, NA, 0, 1, 2, 0, NA, 3, 3, 1, ...
## $ Irrit_Wk4         <int> NA, 0, 0, NA, NA, NA, 0, NA, 0, 0, NA, NA, N...
## $ Irrit_Wk8         <int> NA, 0, 0, 0, NA, NA, 0, 0, 0, 0, NA, NA, NA,...
## $ Irrit_Wk12        <int> NA, 0, 0, 0, 1, NA, NA, NA, 1, 1, NA, NA, NA...
## $ Irrit_Wk24        <int> NA, 0, NA, 1, NA, NA, NA, 0, 1, 1, NA, NA, N...
## $ Irrit_Wk48        <int> NA, 1, NA, 1, NA, NA, NA, 0, NA, 3, NA, NA, ...
## $ Appetite_BL       <int> 1, 3, 3, 2, 0, NA, 0, 3, 2, 2, NA, 1, 2, 2, ...
## $ Appetite_Wk4      <int> NA, 3, 2, NA, NA, NA, 3, NA, 2, 2, NA, NA, N...
## $ Appetite_Wk8      <int> NA, 3, 2, 2, NA, NA, 3, 2, 2, 2, NA, NA, NA,...
## $ Appetite_Wk12     <int> NA, 3, 3, 2, 2, NA, NA, NA, 2, 0, NA, NA, NA...
## $ Appetite_Wk24     <int> NA, 2, NA, 2, NA, NA, NA, 3, 2, 2, NA, NA, N...
## $ Appetite_Wk48     <int> NA, 2, NA, 2, NA, NA, NA, 2, NA, 3, NA, NA, ...
## $ Concen_BL         <int> 3, 0, 0, 0, 0, NA, 2, 2, 0, 1, NA, 1, 3, 0, ...
## $ Concen_Wk4        <int> NA, 0, 0, NA, NA, NA, 0, NA, 0, 1, NA, NA, N...
## $ Concen_Wk8        <int> NA, 0, 0, 1, NA, NA, 0, 0, 0, 1, NA, NA, NA,...
## $ Concen_Wk12       <int> NA, 0, 0, 0, 0, NA, NA, NA, 0, 1, NA, NA, NA...
## $ Concen_Wk24       <int> NA, 0, NA, 0, NA, NA, NA, 1, 0, 1, NA, NA, N...
## $ Concen_Wk48       <int> NA, 0, NA, 0, NA, NA, NA, 0, NA, 3, NA, NA, ...
## $ Fatigue_BL        <int> 2, 0, 3, 1, 2, NA, 0, 2, 2, 0, NA, 0, 3, 1, ...
## $ Fatigue_Wk4       <int> NA, 0, 1, NA, NA, NA, 0, NA, 1, 0, NA, NA, N...
## $ Fatigue_Wk8       <int> NA, 0, 2, 1, NA, NA, 0, 0, 3, 1, NA, NA, NA,...
## $ Fatigue_Wk12      <int> NA, 0, 3, 0, 2, NA, NA, NA, 1, 1, NA, NA, NA...
## $ Fatigue_Wk24      <int> NA, 0, NA, 0, NA, NA, NA, 2, 0, 1, NA, NA, N...
## $ Fatigue_Wk48      <int> NA, 1, NA, 2, NA, NA, NA, 0, NA, 2, NA, NA, ...
## $ Int_sex_BL        <int> 2, 1, 3, 1, 0, NA, 3, 2, 0, 1, NA, 1, 3, 2, ...
## $ Int_sex_Wk4       <int> NA, 1, 3, NA, NA, NA, 3, NA, 1, 1, NA, NA, N...
## $ Int_sex_Wk8       <int> NA, 1, 0, 1, NA, NA, 3, 0, 1, 1, NA, NA, NA,...
## $ Int_sex_Wk12      <int> NA, 1, 3, 1, 3, NA, NA, NA, 1, 1, NA, NA, NA...
## $ Int_sex_Wk24      <int> NA, 1, NA, 1, NA, NA, NA, 1, 1, 1, NA, NA, N...
## $ Int_sex_Wk48      <int> NA, 1, NA, 1, NA, NA, NA, 0, NA, 1, NA, NA, ...
head(bdi)
tail(bdi)

Process data

Calculate total BDI scores

# Create new column (total BDI score for each time point) by summing
# scores for each time point
bdi_BL <- bdi %>% select(contains('BL'))
bdi$total_BL <- rowSums(bdi_BL)

bdi_Wk4 <- bdi %>% select(matches('Wk4$'))
bdi$total_Wk4 <- rowSums(bdi_Wk4) 

bdi_Wk8 <- bdi %>% select(contains('Wk8'))
bdi$total_Wk8 <- rowSums(bdi_Wk8)

bdi_Wk12 <- bdi %>% select(contains('Wk12'))
bdi$total_Wk12 <- rowSums(bdi_Wk12) 

bdi_Wk24 <- bdi %>% select(contains('Wk24'))
bdi$total_Wk24 <- rowSums(bdi_Wk24) 

bdi_Wk48 <- bdi %>% select(contains('Wk48'))
bdi$total_Wk48 <- rowSums(bdi_Wk48) 

# Check
glimpse(bdi)
## Observations: 160
## Variables: 136
## $ ID                <chr> "j1", "j10", "j11", "j12", "j17", "j18", "j1...
## $ Site              <chr> "u1", "u1", "u1", "u1", "u1", "u1", "u1", "u...
## $ Group             <chr> "p", "t", "p", "t", "t", "t", "t", "p", "t",...
## $ Sex               <chr> "female", "male", "female", "female", "femal...
## $ Sadness_BL        <int> 1, 1, 3, 0, 3, NA, 0, 2, 0, 1, NA, 3, 3, 3, ...
## $ Sadness_Wk4       <int> NA, 0, 0, NA, NA, NA, 0, NA, 0, 2, NA, NA, N...
## $ Sadness_Wk8       <int> NA, 0, 0, 0, NA, NA, 0, 3, 0, 1, NA, NA, NA,...
## $ Sadness_Wk12      <int> NA, 0, 0, 0, 3, NA, NA, NA, 0, 1, NA, NA, NA...
## $ Sadness_Wk24      <int> NA, 0, NA, 0, NA, NA, NA, 1, 0, 0, NA, NA, N...
## $ Sadness_Wk48      <int> NA, 1, NA, 0, NA, NA, NA, 0, NA, 3, NA, NA, ...
## $ Pessimism_BL      <int> 2, 0, 0, 1, 2, NA, 0, 3, 0, 1, NA, 3, 3, 0, ...
## $ Pessimism_Wk4     <int> NA, 0, 0, NA, NA, NA, 0, NA, 2, 1, NA, NA, N...
## $ Pessimism_Wk8     <int> NA, 0, 0, 0, NA, NA, 0, 1, 0, 1, NA, NA, NA,...
## $ Pessimism_Wk12    <int> NA, 0, 0, 0, 3, NA, NA, NA, 0, 0, NA, NA, NA...
## $ Pessimism_Wk24    <int> NA, 0, NA, 0, NA, NA, NA, 0, 0, 0, NA, NA, N...
## $ Pessimism_Wk48    <int> NA, 0, NA, 0, NA, NA, NA, 0, NA, 1, NA, NA, ...
## $ Past_fail_BL      <int> 2, 0, 2, 0, 0, NA, 2, 3, 0, 0, NA, 3, 3, 0, ...
## $ Past_fail_Wk4     <int> NA, 0, 0, NA, NA, NA, 0, NA, 0, 0, NA, NA, N...
## $ Past_fail_Wk8     <int> NA, 0, 0, 0, NA, NA, 0, 2, 0, 0, NA, NA, NA,...
## $ Past_fail_Wk12    <int> NA, 0, 0, 0, 3, NA, NA, NA, 0, 0, NA, NA, NA...
## $ Past_fail_Wk24    <int> NA, 0, NA, 0, NA, NA, NA, 3, 0, 0, NA, NA, N...
## $ Past_fail_Wk48    <int> NA, 0, NA, 0, NA, NA, NA, 0, NA, 0, NA, NA, ...
## $ Loss_pleas_BL     <int> 2, 1, 2, 1, 0, NA, 3, 1, 1, 0, NA, 2, 3, 2, ...
## $ Loss_pleas_Wk4    <int> NA, 1, 2, NA, NA, NA, 3, NA, 0, 0, NA, NA, N...
## $ Loss_pleas_Wk8    <int> NA, 1, 2, 1, NA, NA, 3, 1, 0, 0, NA, NA, NA,...
## $ Loss_pleas_Wk12   <int> NA, 0, 2, 1, 2, NA, NA, NA, 1, 0, NA, NA, NA...
## $ Loss_pleas_Wk24   <int> NA, 1, NA, 1, NA, NA, NA, 2, 1, 1, NA, NA, N...
## $ Loss_pleas_Wk48   <int> NA, 1, NA, 2, NA, NA, NA, 2, NA, 1, NA, NA, ...
## $ Guilty_BL         <int> 2, 0, 2, 0, 0, NA, 1, 1, 0, 1, NA, 3, 1, 0, ...
## $ Guilty_Wk4        <int> NA, 1, 0, NA, NA, NA, 0, NA, 0, 0, NA, NA, N...
## $ Guilty_Wk8        <int> NA, 0, 0, 0, NA, NA, 0, 1, 0, 0, NA, NA, NA,...
## $ Guilty_Wk12       <int> NA, 0, 0, 0, 2, NA, NA, NA, 0, 0, NA, NA, NA...
## $ Guilty_Wk24       <int> NA, 0, NA, 0, NA, NA, NA, 2, 0, 0, NA, NA, N...
## $ Guilty_Wk48       <int> NA, 0, NA, 0, NA, NA, NA, 0, NA, 0, NA, NA, ...
## $ Punish_BL         <int> 3, 0, 3, 0, 0, NA, 0, 3, 0, 0, NA, 3, 3, 0, ...
## $ Punish_Wk4        <int> NA, 0, 0, NA, NA, NA, 0, NA, 0, 0, NA, NA, N...
## $ Punish_Wk8        <int> NA, 0, 0, 0, NA, NA, 0, 3, 0, 0, NA, NA, NA,...
## $ Punish_Wk12       <int> NA, 0, 0, 0, 3, NA, NA, NA, 0, 0, NA, NA, NA...
## $ Punish_Wk24       <int> NA, 0, NA, 0, NA, NA, NA, 3, 0, 0, NA, NA, N...
## $ Punish_Wk48       <int> NA, 0, NA, 3, NA, NA, NA, 0, NA, 0, NA, NA, ...
## $ Self_dislike_BL   <int> 1, 0, 2, 0, 0, NA, 2, 2, 1, 0, NA, 2, 3, 0, ...
## $ Self_dislike_Wk4  <int> NA, 0, 0, NA, NA, NA, 0, NA, 0, 0, NA, NA, N...
## $ Self_dislike_Wk8  <int> NA, 0, 0, 0, NA, NA, 0, 0, 0, 0, NA, NA, NA,...
## $ Self_dislike_Wk12 <int> NA, 0, 0, 0, 1, NA, NA, NA, 0, 0, NA, NA, NA...
## $ Self_dislike_Wk24 <int> NA, 0, NA, 0, NA, NA, NA, 2, 0, 0, NA, NA, N...
## $ Self_dislike_Wk48 <int> NA, 0, NA, 1, NA, NA, NA, 0, NA, 0, NA, NA, ...
## $ Self_crit_BL      <int> 3, 0, 3, 0, 3, NA, 3, 3, 0, 2, NA, 3, 3, 0, ...
## $ Self_crit_Wk4     <int> NA, 1, 0, NA, NA, NA, 0, NA, 0, 0, NA, NA, N...
## $ Self_crit_Wk8     <int> NA, 0, 0, 0, NA, NA, 0, 3, 0, 0, NA, NA, NA,...
## $ Self_crit_Wk12    <int> NA, 0, 0, 0, 3, NA, NA, NA, 0, 0, NA, NA, NA...
## $ Self_crit_Wk24    <int> NA, 1, NA, 0, NA, NA, NA, 2, 1, 0, NA, NA, N...
## $ Self_crit_Wk48    <int> NA, 0, NA, 1, NA, NA, NA, 0, NA, 0, NA, NA, ...
## $ Suicide_BL        <int> 3, 0, 0, 0, 0, NA, 0, 0, 0, 0, NA, 1, 0, 0, ...
## $ Suicide_Wk4       <int> NA, 0, 0, NA, NA, NA, 0, NA, 0, 0, NA, NA, N...
## $ Suicide_Wk8       <int> NA, 0, 0, 0, NA, NA, 0, 0, 0, 0, NA, NA, NA,...
## $ Suicide_Wk12      <int> NA, 0, 0, 0, 0, NA, NA, NA, 0, 0, NA, NA, NA...
## $ Suicide_Wk24      <int> NA, 0, NA, 0, NA, NA, NA, 0, 0, 0, NA, NA, N...
## $ Suicide_Wk48      <int> NA, 0, NA, 0, NA, NA, NA, 0, NA, 0, NA, NA, ...
## $ Crying_BL         <int> 3, 0, 3, 0, 3, NA, 0, 2, 0, 0, NA, 1, 0, 1, ...
## $ Crying_Wk4        <int> NA, 3, 0, NA, NA, NA, 0, NA, 0, 0, NA, NA, N...
## $ Crying_Wk8        <int> NA, 0, 0, 0, NA, NA, 0, 0, 0, 0, NA, NA, NA,...
## $ Crying_Wk12       <int> NA, 3, 0, 0, 3, NA, NA, NA, 0, 0, NA, NA, NA...
## $ Crying_Wk24       <int> NA, 3, NA, 0, NA, NA, NA, 2, 3, 3, NA, NA, N...
## $ Crying_Wk48       <int> NA, 0, NA, 2, NA, NA, NA, 0, NA, 0, NA, NA, ...
## $ Agitation_BL      <int> 3, 3, 3, 0, 3, NA, 3, 2, 0, 0, NA, 1, 0, 2, ...
## $ Agitation_Wk4     <int> NA, 3, 3, NA, NA, NA, 0, NA, 0, 0, NA, NA, N...
## $ Agitation_Wk8     <int> NA, 3, 0, 0, NA, NA, 0, 3, 3, 0, NA, NA, NA,...
## $ Agitation_Wk12    <int> NA, 3, 2, 3, 1, NA, NA, NA, 0, 0, NA, NA, NA...
## $ Agitation_Wk24    <int> NA, 3, NA, 0, NA, NA, NA, 1, 3, 2, NA, NA, N...
## $ Agitation_Wk48    <int> NA, 3, NA, 2, NA, NA, NA, 2, NA, 1, NA, NA, ...
## $ Loss_int_BL       <int> 3, 0, 0, 0, 0, NA, 0, 1, 0, 0, NA, 1, 0, 0, ...
## $ Loss_int_Wk4      <int> NA, 0, 0, NA, NA, NA, 0, NA, 0, 0, NA, NA, N...
## $ Loss_int_Wk8      <int> NA, 0, 0, 0, NA, NA, 0, 0, 0, 0, NA, NA, NA,...
## $ Loss_int_Wk12     <int> NA, 0, 0, 0, 1, NA, NA, NA, 0, 0, NA, NA, NA...
## $ Loss_int_Wk24     <int> NA, 0, NA, 0, NA, NA, NA, 0, 0, 0, NA, NA, N...
## $ Loss_int_Wk48     <int> NA, 0, NA, 1, NA, NA, NA, 0, NA, 0, NA, NA, ...
## $ Indecis_BL        <int> 2, 0, 0, 0, 0, NA, 0, 3, 0, 1, NA, 2, 3, 1, ...
## $ Indecis_Wk4       <int> NA, 0, 0, NA, NA, NA, 0, NA, 0, 0, NA, NA, N...
## $ Indecis_Wk8       <int> NA, 0, 0, 0, NA, NA, 0, 0, 0, 0, NA, NA, NA,...
## $ Indecis_Wk12      <int> NA, 0, 0, 0, 0, NA, NA, NA, 0, 0, NA, NA, NA...
## $ Indecis_Wk24      <int> NA, 0, NA, 0, NA, NA, NA, 2, 0, 0, NA, NA, N...
## $ Indecis_Wk48      <int> NA, 0, NA, 1, NA, NA, NA, 0, NA, 2, NA, NA, ...
## $ Worthless_BL      <int> 2, 1, 0, 0, 0, NA, 0, 2, 0, 0, NA, 3, 2, 0, ...
## $ Worthless_Wk4     <int> NA, 0, 1, NA, NA, NA, 0, NA, 0, 0, NA, NA, N...
## $ Worthless_Wk8     <int> NA, 0, 0, 0, NA, NA, 0, 0, 0, 0, NA, NA, NA,...
## $ Worthless_Wk12    <int> NA, 0, 0, 0, 0, NA, NA, NA, 0, 0, NA, NA, NA...
## $ Worthless_Wk24    <int> NA, 0, NA, 0, NA, NA, NA, 1, 0, 0, NA, NA, N...
## $ Worthless_Wk48    <int> NA, 0, NA, 2, NA, NA, NA, 0, NA, 0, NA, NA, ...
## $ Loss_energy_BL    <int> 1, 1, 2, 0, 2, NA, 0, 2, 2, 1, NA, 1, 2, 0, ...
## $ Loss_energy_Wk4   <int> NA, 1, 2, NA, NA, NA, 0, NA, 1, 0, NA, NA, N...
## $ Loss_energy_Wk8   <int> NA, 1, 2, 0, NA, NA, 0, 0, 1, 0, NA, NA, NA,...
## $ Loss_energy_Wk12  <int> NA, 1, 3, 1, 3, NA, NA, NA, 1, 1, NA, NA, NA...
## $ Loss_energy_Wk24  <int> NA, 0, NA, 1, NA, NA, NA, 1, 1, 3, NA, NA, N...
## $ Loss_energy_Wk48  <int> NA, 0, NA, 1, NA, NA, NA, 0, NA, 1, NA, NA, ...
## $ Sleep_BL          <int> 3, 2, 3, 2, 2, NA, 0, 3, 3, 2, NA, 0, 2, 2, ...
## $ Sleep_Wk4         <int> NA, 3, 2, NA, NA, NA, 3, NA, 3, 2, NA, NA, N...
## $ Sleep_Wk8         <int> NA, 3, 2, 2, NA, NA, 2, 2, 2, 2, NA, NA, NA,...
## $ Sleep_Wk12        <int> NA, 3, 3, 2, 2, NA, NA, NA, 3, 3, NA, NA, NA...
## $ Sleep_Wk24        <int> NA, 2, NA, 2, NA, NA, NA, 2, 3, 2, NA, NA, N...
## $ Sleep_Wk48        <int> NA, 2, NA, 3, NA, NA, NA, 0, NA, 0, NA, NA, ...
## $ Irrit_BL          <int> 2, 0, 1, 0, 2, NA, 0, 1, 2, 0, NA, 3, 3, 1, ...
## $ Irrit_Wk4         <int> NA, 0, 0, NA, NA, NA, 0, NA, 0, 0, NA, NA, N...
## $ Irrit_Wk8         <int> NA, 0, 0, 0, NA, NA, 0, 0, 0, 0, NA, NA, NA,...
## $ Irrit_Wk12        <int> NA, 0, 0, 0, 1, NA, NA, NA, 1, 1, NA, NA, NA...
## $ Irrit_Wk24        <int> NA, 0, NA, 1, NA, NA, NA, 0, 1, 1, NA, NA, N...
## $ Irrit_Wk48        <int> NA, 1, NA, 1, NA, NA, NA, 0, NA, 3, NA, NA, ...
## $ Appetite_BL       <int> 1, 3, 3, 2, 0, NA, 0, 3, 2, 2, NA, 1, 2, 2, ...
## $ Appetite_Wk4      <int> NA, 3, 2, NA, NA, NA, 3, NA, 2, 2, NA, NA, N...
## $ Appetite_Wk8      <int> NA, 3, 2, 2, NA, NA, 3, 2, 2, 2, NA, NA, NA,...
## $ Appetite_Wk12     <int> NA, 3, 3, 2, 2, NA, NA, NA, 2, 0, NA, NA, NA...
## $ Appetite_Wk24     <int> NA, 2, NA, 2, NA, NA, NA, 3, 2, 2, NA, NA, N...
## $ Appetite_Wk48     <int> NA, 2, NA, 2, NA, NA, NA, 2, NA, 3, NA, NA, ...
## $ Concen_BL         <int> 3, 0, 0, 0, 0, NA, 2, 2, 0, 1, NA, 1, 3, 0, ...
## $ Concen_Wk4        <int> NA, 0, 0, NA, NA, NA, 0, NA, 0, 1, NA, NA, N...
## $ Concen_Wk8        <int> NA, 0, 0, 1, NA, NA, 0, 0, 0, 1, NA, NA, NA,...
## $ Concen_Wk12       <int> NA, 0, 0, 0, 0, NA, NA, NA, 0, 1, NA, NA, NA...
## $ Concen_Wk24       <int> NA, 0, NA, 0, NA, NA, NA, 1, 0, 1, NA, NA, N...
## $ Concen_Wk48       <int> NA, 0, NA, 0, NA, NA, NA, 0, NA, 3, NA, NA, ...
## $ Fatigue_BL        <int> 2, 0, 3, 1, 2, NA, 0, 2, 2, 0, NA, 0, 3, 1, ...
## $ Fatigue_Wk4       <int> NA, 0, 1, NA, NA, NA, 0, NA, 1, 0, NA, NA, N...
## $ Fatigue_Wk8       <int> NA, 0, 2, 1, NA, NA, 0, 0, 3, 1, NA, NA, NA,...
## $ Fatigue_Wk12      <int> NA, 0, 3, 0, 2, NA, NA, NA, 1, 1, NA, NA, NA...
## $ Fatigue_Wk24      <int> NA, 0, NA, 0, NA, NA, NA, 2, 0, 1, NA, NA, N...
## $ Fatigue_Wk48      <int> NA, 1, NA, 2, NA, NA, NA, 0, NA, 2, NA, NA, ...
## $ Int_sex_BL        <int> 2, 1, 3, 1, 0, NA, 3, 2, 0, 1, NA, 1, 3, 2, ...
## $ Int_sex_Wk4       <int> NA, 1, 3, NA, NA, NA, 3, NA, 1, 1, NA, NA, N...
## $ Int_sex_Wk8       <int> NA, 1, 0, 1, NA, NA, 3, 0, 1, 1, NA, NA, NA,...
## $ Int_sex_Wk12      <int> NA, 1, 3, 1, 3, NA, NA, NA, 1, 1, NA, NA, NA...
## $ Int_sex_Wk24      <int> NA, 1, NA, 1, NA, NA, NA, 1, 1, 1, NA, NA, N...
## $ Int_sex_Wk48      <int> NA, 1, NA, 1, NA, NA, NA, 0, NA, 1, NA, NA, ...
## $ total_BL          <dbl> 46, 13, 38, 8, 22, NA, 19, 43, 13, 13, NA, 3...
## $ total_Wk4         <dbl> NA, 17, 16, NA, NA, NA, 12, NA, 10, 9, NA, N...
## $ total_Wk8         <dbl> NA, 12, 10, 8, NA, NA, 11, 21, 12, 9, NA, NA...
## $ total_Wk12        <dbl> NA, 14, 19, 10, 38, NA, NA, NA, 10, 9, NA, N...
## $ total_Wk24        <dbl> NA, 13, NA, 8, NA, NA, NA, 31, 16, 17, NA, N...
## $ total_Wk48        <dbl> NA, 12, NA, 25, NA, NA, NA, 6, NA, 21, NA, N...

Clean data

# Gather from wide format into long format
bdi <- bdi %>%
    tidyr::gather(key = bdi_question,
                  value = bdi_rating,
                  -ID, - Site, - Group, -Sex)

# Separate by date
bdi <- bdi %>%
    mutate(bdi_question = stringr::str_replace_all(bdi_question,
                                                   pattern = 'Int_s',
                                                   replacement = 'S'),
           bdi_question = stringr::str_replace_all(bdi_question,
                                                   pattern = 'Past_f',
                                                   replacement = 'PF'),
           bdi_question = stringr::str_replace_all(bdi_question,
                                                   pattern = 'Loss_p',
                                                   replacement = 'LP'),
           bdi_question = stringr::str_replace_all(bdi_question,
                                                   pattern = 'Self_d',
                                                   replacement = 'SD'),
           bdi_question = stringr::str_replace_all(bdi_question,
                                                   pattern = 'Self_c',
                                                   replacement = 'SC'),
           bdi_question = stringr::str_replace_all(bdi_question,
                                                   pattern = 'Loss_i',
                                                   replacement = 'LI'),
           bdi_question = stringr::str_replace_all(bdi_question,
                                                   pattern = 'Loss_e',
                                                   replacement = 'LE')) %>%
    separate(bdi_question, c('question', 'time_point'), sep = '_')

# Set levels for time_points        
bdi <- bdi %>% mutate(time_point = factor(time_point,
                                          levels = c('BL', 'Wk4', 'Wk8', 
                                                     'Wk12', 'Wk24', 'Wk48'),
                                          ordered = TRUE))

# Get totals 
bdi_tot <- filter(bdi, question == 'total')

glimpse(bdi_tot)
## Observations: 960
## Variables: 7
## $ ID         <chr> "j1", "j10", "j11", "j12", "j17", "j18", "j19", "j2...
## $ Site       <chr> "u1", "u1", "u1", "u1", "u1", "u1", "u1", "u1", "u1...
## $ Group      <chr> "p", "t", "p", "t", "t", "t", "t", "p", "t", "t", "...
## $ Sex        <chr> "female", "male", "female", "female", "female", "fe...
## $ question   <chr> "total", "total", "total", "total", "total", "total...
## $ time_point <ord> BL, BL, BL, BL, BL, BL, BL, BL, BL, BL, BL, BL, BL,...
## $ bdi_rating <dbl> 46, 13, 38, 8, 22, NA, 19, 43, 13, 13, NA, 38, 45, ...

Plots

Note: Clinical cut-off points are marked by lines

# Create new column with time
bdi_tot <- bdi_tot %>% 
    mutate(Week = case_when(
        stringr::str_detect(.$time_point, "Wk48")  ~ 48,
        stringr::str_detect(.$time_point, "BL")  ~ 0,
        stringr::str_detect(.$time_point, "Wk4$")  ~ 4,
        stringr::str_detect(.$time_point, "Wk8")  ~ 8,
        stringr::str_detect(.$time_point, "Wk12")  ~ 12,
        stringr::str_detect(.$time_point, "Wk24")  ~ 24
    ))

# Check column contents
unique(bdi_tot$Week)  
## [1]  0  4  8 12 24 48
# Delete time_point column
bdi_tot <- bdi_tot %>% select(-time_point)

Spaghetti plots

ggplot(data = bdi_tot) +
    aes(x = Week,
        y = bdi_rating,
        colour = Site,
        group = ID) %>%
    geom_line() +
    labs(title = 'Beck depression inventory',
         subtitle = 'Colour by site') +
    theme(legend.position = 'right') +
              scale_x_continuous(breaks = c(0,4,8,12,24,48),
                                 limits = c(0,48)) +
    geom_hline(yintercept = c(10, 16, 20, 30, 40), size = 0.25, linetype = 2)

ggplot(data = bdi_tot) +
    aes(x = Week,
        y = bdi_rating,
        colour = ID,
        group = ID) %>%
    geom_line() +
    facet_grid(Site ~ .) +
    labs(title = 'Beck depression inventory',
         subtitle = 'Facet by site, colour by ID') +
    theme(legend.position = 'none') +
    scale_x_continuous(breaks = c(0,4,8,12,24,48),
                       limits = c(0,48)) +
    geom_hline(yintercept = c(10, 16, 20, 30, 40), size = 0.25, linetype = 2)

ggplot(data = bdi_tot) +
    aes(x = Week,
        y = bdi_rating,
        colour = Sex,
        group = ID) %>%
    geom_line() +
    labs(title = 'Beck depression inventory',
         subtitle = 'Colour by gender') +
    theme(legend.position = 'right') +
    scale_x_continuous(breaks = c(0,4,8,12,24,48),
                       limits = c(0,48)) +
    geom_hline(yintercept = c(10, 16, 20, 30, 40), size = 0.25, linetype = 2)

bdi_tot %>% filter(Site == 'u1') %>%    
    ggplot(.) +
    aes(x = Week,
        y = bdi_rating,
        colour = Group,
        group = ID) %>%
    geom_line() +
    facet_grid(Site ~ .) +
    labs(title = 'Site J: Beck depression inventory',
         subtitle = 'Colour by Group') +
    theme(legend.position = 'right') +
    scale_x_continuous(breaks = c(0,4,8,12,24,48),
                       limits = c(0,48)) +
    geom_hline(yintercept = c(10, 16, 20, 30, 40), size = 0.25, linetype = 2)  

bdi_tot %>% filter(Site == 'u1') %>%    
ggplot(.) +
    aes(x = Week,
        y = bdi_rating,
        colour = ID,
        group = ID) %>%
    geom_line() +
    facet_grid(Site ~ .) +
    labs(title = 'Site J: Beck depression inventory',
         subtitle = 'Colour by ID') +
    theme(legend.position = 'none') +
    scale_x_continuous(breaks = c(0,4,8,12,24,48),
                       limits = c(0,48)) +
    geom_hline(yintercept = c(10, 16, 20, 30, 40), size = 0.25, linetype = 2)   

bdi_tot %>% filter(Site == 'r1') %>%    
    ggplot(.) +
    aes(x = Week,
        y = bdi_rating,
        colour = Group,
        group = ID) %>%
    geom_line() +
    facet_grid(Site ~ .) +
    labs(title = 'Site M: Beck depression inventory',
         subtitle = 'Colour by Group') +
    theme(legend.position = 'right') +
    scale_x_continuous(breaks = c(0,4,8,12,24,48),
                       limits = c(0,48)) +
    geom_hline(yintercept = c(10, 16, 20, 30, 40), size = 0.25, linetype = 2)  

bdi_tot %>% filter(Site == 'r1') %>%    
    ggplot(.) +
    aes(x = Week,
        y = bdi_rating,
        colour = ID,
        group = ID) %>%
    geom_line() +
    facet_grid(Site ~ .) +
    labs(title = 'Site M: Beck depression inventory',
         subtitle = 'Colour by ID') +
    theme(legend.position = 'none') +
    scale_x_continuous(breaks = c(0,4,8,12,24,48),
                       limits = c(0,48)) +
    geom_hline(yintercept = c(10, 16, 20, 30, 40), size = 0.25, linetype = 2)  

bdi_tot %>% filter(Site == 'u2') %>%    
    ggplot(.) +
    aes(x = Week,
        y = bdi_rating,
        colour = Group,
        group = ID) %>%
    geom_line() +
    facet_grid(Site ~ .) +
    labs(title = 'Site R: Beck depression inventory',
         subtitle = 'Colour by Group') +
    theme(legend.position = 'right') +
    scale_x_continuous(breaks = c(0,4,8,12,24,48),
                       limits = c(0,48)) +
    geom_hline(yintercept = c(10, 16, 20, 30, 40), size = 0.25, linetype = 2)  

bdi_tot %>% filter(Site == 'u2') %>%    
    ggplot(.) +
    aes(x = Week,
        y = bdi_rating,
        colour = ID,
        group = ID) %>%
    geom_line() +
    facet_grid(Site ~ .) +
    labs(title = 'Site R: Beck depression inventory',
         subtitle = 'Colour by ID') +
    theme(legend.position = 'none') +
    scale_x_continuous(breaks = c(0,4,8,12,24,48),
                       limits = c(0,48)) +
    geom_hline(yintercept = c(10, 16, 20, 30, 40), size = 0.25, linetype = 2)  

bdi_tot %>% filter(Site == 'r2') %>%    
    ggplot(.) +
    aes(x = Week,
        y = bdi_rating,
        colour = Group,
        group = ID) %>%
    geom_line() +
    facet_grid(Site ~ .) +
    labs(title = 'Site Z: Beck depression inventory',
         subtitle = 'Colour by Group') +
    theme(legend.position = 'right') +
    scale_x_continuous(breaks = c(0,4,8,12,24,48),
                       limits = c(0,48)) +
    geom_hline(yintercept = c(10, 16, 20, 30, 40), size = 0.25, linetype = 2)  

bdi_tot %>% filter(Site == 'r2') %>%    
    ggplot(.) +
    aes(x = Week,
        y = bdi_rating,
        colour = ID,
        group = ID) %>%
    geom_line() +
    facet_grid(Site ~ .) +
    labs(title = 'Site Z: Beck depression inventory',
         subtitle = 'Colour by ID') +
    theme(legend.position = 'none') +
    scale_x_continuous(breaks = c(0,4,8,12,24,48),
                       limits = c(0,48)) +
    geom_hline(yintercept = c(10, 16, 20, 30, 40), size = 0.25, linetype = 2)  

Summary plots

ggplot(data = bdi_tot) +
    aes(x = as.factor(Week),
        y = bdi_rating,
        colour = Group,
        fill = Group) %>%
    geom_boxplot(alpha = 0.6) +
    geom_hline(yintercept = c(10, 16, 20, 30, 40), size = 0.25, linetype = 2) +
    facet_grid(Site ~ .) +
    labs(title = 'Beck Depression Inventory (BDI)', 
         subtitle = 'Faceted by study site, coloured by group')

ggplot(data = bdi_tot) +
    aes(x = as.factor(Week),
        y = bdi_rating,
        colour = Sex,
        fill = Sex) %>%
    geom_boxplot(alpha = 0.6) +
    geom_hline(yintercept = c(10, 16, 20, 30, 40), size = 0.25, linetype = 2) +
    facet_grid(Group ~ .) +
    labs(title = 'Beck Depression Inventory (BDI)', 
         subtitle = 'Faceted by study group, coloured by sex')

ggplot(data = bdi_tot) +
    aes(x = as.factor(Week),
        y = bdi_rating,
        colour = Sex,
        fill = Sex) %>%
    geom_boxplot(alpha = 0.6) +
    geom_hline(yintercept = c(10, 16, 20, 30, 40), size = 0.25, linetype = 2) +
    facet_grid(Site ~ Group) +
    labs(title = 'Beck Depression Inventory (BDI)', 
         subtitle = 'Faceted by study site and group, coloured by sex')

ggplot(data = filter(bdi_tot, Sex == 'female')) +
    aes(x = as.factor(Week),
        y = bdi_rating) %>%
    geom_boxplot(alpha = 0.6) +
    geom_hline(yintercept = c(10, 16, 20, 30, 40), size = 0.25, linetype = 2) +
    labs(title = 'Beck Depression Inventory (BDI)',
         subtitle = 'Women only')

ggplot(data = filter(bdi_tot, Sex == 'female' & Site != 'u1')) +
    aes(x = as.factor(Week),
        y = bdi_rating) %>%
    geom_boxplot(alpha = 0.6) +
    geom_hline(yintercept = c(10, 16, 20, 30, 40), size = 0.25, linetype = 2) +
    labs(title = 'Beck Depression Inventory (BDI)', 
         subtitle = 'Women only (excluding U1)')

Session information

sessionInfo()
## R version 3.4.2 (2017-09-28)
## Platform: x86_64-apple-darwin15.6.0 (64-bit)
## Running under: macOS Sierra 10.12.6
## 
## Matrix products: default
## BLAS: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRblas.0.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRlapack.dylib
## 
## locale:
## [1] en_GB.UTF-8/en_GB.UTF-8/en_GB.UTF-8/C/en_GB.UTF-8/en_GB.UTF-8
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] bindrcpp_0.2  tidyr_0.7.2   ggplot2_2.2.1 dplyr_0.7.4  
## 
## loaded via a namespace (and not attached):
##  [1] Rcpp_0.12.13     knitr_1.17       bindr_0.1        magrittr_1.5    
##  [5] hms_0.3          tidyselect_0.2.2 munsell_0.4.3    colorspace_1.3-2
##  [9] R6_2.2.2         rlang_0.1.2      plyr_1.8.4       stringr_1.2.0   
## [13] tools_3.4.2      grid_3.4.2       gtable_0.2.0     htmltools_0.3.6 
## [17] lazyeval_0.2.0   yaml_2.1.14      assertthat_0.2.0 rprojroot_1.2   
## [21] digest_0.6.12    tibble_1.3.4     reshape2_1.4.2   readr_1.1.1     
## [25] purrr_0.2.4      glue_1.1.1       evaluate_0.10.1  rmarkdown_1.6   
## [29] labeling_0.3     stringi_1.1.5    compiler_3.4.2   scales_0.5.0    
## [33] backports_1.1.1  jsonlite_1.5     pkgconfig_2.0.1